from numpy import *
import time
import matplotlib.pyplot as plt
import KMeans

# 数据集的路径
filePath1 = 'E:\\bigData\\dataset\\zbkmeans.txt'
filePath2 = 'E:\\bigData\\ml\\dataset\\kmeans\\testSet.txt'

## step 1: 从数据集中记载数据
print ("第1步: 从数据集中记载数据。。。。。。" )

# 表列表中的每个元素也是一个二维的列表；
# 这个二维列表就是一个样本，样本中包含有我们的属性值和类别号。
# 与我们所熟悉的矩阵类似，最终我们将获得N*2的矩阵，
dataSet = []

# 从指定的路径记载数据集
fileIn = open(filePath2)

# 将文件的内容读入内存
for line in fileIn.readlines():
    temp = []
    lineArr = line.strip().split('\t')  #line.strip()把末尾的'\n'去掉
    temp.append(float(lineArr[0]))
    temp.append(float(lineArr[1]))
    dataSet.append(temp)
    #dataSet.append([float(lineArr[0]), float(lineArr[1])])#上面的三条语句可以有这条语句代替

# 关闭文件流
fileIn.close()

# step 2: 构建簇
print ("第2步：正在构建簇。。。。。。"  )

# mat()函数是Numpy中的库函数，将数组转化为矩阵
dataSet = mat(dataSet)

# 指定程序中簇的个数
k = 4

# 调用KMeans文件中定义的kmeans方法。
centroids, clusterAssment = KMeans.kmeans(dataSet, k)

# step 3: 展示聚类后的结果
print ("第3步：请看经过聚类后的结果。")
KMeans.showCluster(dataSet, k, centroids, clusterAssment)